public class Rob3 {
    /*从下到上的迭代数组解法*/
    public int rob(int[] nums) {
        int n = nums.length;
        //为什么数组长度定义为 n+1？
        /*dp[i] 表示从第 i 家开始抢劫获得的金额数，0~n*/
        int dp[] = new int[n + 2];

        for (int i = n-1; i >= 0; i--) {
            dp[i] = Math.max(nums[i] + dp[i+2],
                    dp[i+1]);
        }
        return dp[0];
    }
}
